
                            Welcome to MidiShare

-------------------------------------------------------------------------------


MidiShare is a real-time multi-tasks Midi operating system specially devised 
for the development of
 musical applications. Its innovative features and careful 
design, result of 6 years of research and
 development, provide developers with 
a powerful and efficient toolbox for developing professional 
Midi applications. 

MidiShare is based on a client/server model. It is composed of four
 main 
components : 

an event manager, 
a time manager, 
a task manager
 and 
a 
communication manager. 

The event manager provides an uniform way to process 
and store midi events. 
The time manager and the task manager control the 
real-time behavior of applications. 
The communication manager is in charge 
of both inter-applications and midi communications.


The system can be delivered for Apple Macintosh or Atari computers. 

MidiShare version 1.68 for the Macintosh support up to 64 client applications, 

256 Midi ports, Midi TimePiece interface and Ethernet Midi communications.
 
An application provided with the kit allows MidiShare and 
MidiManager applications 
to communicate. Interfaces are available for 
MPW-Pascal, MPW-C, Think-C, 
Common Lisp.

                        

- TECHNICAL CONSIDERATIONS -



MidiShare offers several advantages to developers in terms of code efficiency, 

portability and easiness of developing sophisticated real time Midi 
applications. 
It avoids many complexities and limitations of other Midi 
operating systems.

Communications 
are based on high level events instead of packets of midi 
bytes. These 
events are easier and faster to process than packets of Midi 
bytes. For 
example large system exclusive messages never need to be splitted 
into 
multiple packets. They are sent, received and processed as a whole like 
any 
other Midi events. Events are not limited to strict Midi messages. 
MidiShare offers full 
support for Midi File 1.0 events and future versions 
will provide additional events for multimedia.


The communication manager allows multi-ports configurations (up to 256 physical 
ports) 
to be easily handled. All MidiShare events are stamped with a full Midi 
device address
 defined by a physical port number and a Midi channel. Client 
applications just need one 
input point and one output point to communicate with 
all the Midi devices (up to 4096 devices). 
Connections between applications are 
easier for users. Application code is simpler and the full
 device address of an 
event is never lost during inter-application communications.


MidiShare includes its own dynamic memory manager, specially designed for 
real-time 
operations at interrupt level. This provides applications with a 
convenient and efficient way 
for storing, copying and deleting Midi events 
without using the host memory manager. 
All MidiShare internal buffers and 
queues are dynamically sized avoiding overflow problems 
encountered in 
other systems.

Several mechanisms are proposed to control the real time behavior 
of Midi 
applications. The time manager offers 1ms resolution and supports accurate 
SMPTE 
synchronization in a transparent way.  Application functions called 
'alarms' can be installed to
 deal with incoming events in real time at 
interrupt level. 

The heart of MidiShare is a real time 
scheduler. It allows events to be sent 
in the future as well as delayed function calls (functions to be 
called in 
the future). Delayed function call is a very fast and powerful mechanism for 
complex 
multi-tasking applications when multiple computing need to be done 
in parallel. A proprietary 
scheduling algorithm ensures a very low constant 
time scheduling costs per event, even when
 the scheduler is heavily loaded.

The MidiShare project is an open source project hosted at Sourceforge.
 

http://sourceforge.net/projects/midishare/


Material available on this server are 
historical resources. 
It isn't any more 
supported nor available on Sourceforge.

